package com.erp.freight.service;


import com.erp.freight.domain.vo.ErpProductRefinementFreightVo;
import com.erp.freight.domain.vo.ErpLogisticsServiceInfoVo;
import com.ruoyi.freight.api.domain.AeProductFreight;
import com.ruoyi.freight.api.domain.ErpProductExistingFreightRecord;
import org.springframework.web.bind.annotation.RequestBody;

import java.math.BigDecimal;
import java.util.List;

/**
 * 公共运费试算、计费Service接口
 *
 * @author erp
 * @date 2023-07-20
 */
public interface IErpCommonProductFreightService {

    /**
     * 以菜鸟运费计价模版为准进行运费试算
     * @param productFreight
     * @return
     */
    BigDecimal freightTrialByCaiNiao(ErpProductExistingFreightRecord productFreight, Boolean isSplit);
    BigDecimal freightTrialByCaiNiao(AeProductFreight productFreight, Boolean isSplit);

    /**
     * 根据商品属性，获取推荐物流线路
     * @param productFreight
     * @return
     */
    List<ErpLogisticsServiceInfoVo> getRecommendedLogisticsRoutes(ErpProductExistingFreightRecord productFreight);

    /**
     * 计算精细化运费模版
     * @param templateType 1-标准普货，2-经济普货，3-标准大包，4-大包专线，5-标准特货，6-经济特货
     * @param benchmarkTemplateType 基准模版，即我是否需要根据基准模版计算差值，可以为空
     * @param currency USD 美元 RMB 人民币
     * @return
     */
//    List<AEProductRefinementFreightVo> calculateRefinementFreightTemplate(String templateType, String benchmarkTemplateType, String currency);
    List<ErpProductRefinementFreightVo> calculateRefinementFreightTemplate(String templateType, String benchmarkTemplateType, String currency);

//    /**
//     * 100g以内每10克的标准普货和经济普货的价格差，标准特货和经济特货的价格差
//     * @return
//     */
//    List<ErpProductRefinementFreightVo> calculatePriceDifference();

    /**
     * 运费试算-菜鸟标准普货、特货、菜鸟特货专线-标准 共用
     * @param productFreight
     * @return
     */
    BigDecimal freightCalculateByCainiaoStandard(ErpProductExistingFreightRecord productFreight);
    BigDecimal freightCalculateByCainiaoStandard(AeProductFreight productFreight);

    /**
     * 运费试算-菜鸟超级经济普货、特货共用
     * @param productFreight
     * @return
     */
    BigDecimal freightCalculateByCainiaoSuperEconomy(ErpProductExistingFreightRecord productFreight);
    BigDecimal freightCalculateByCainiaoSuperEconomy(AeProductFreight productFreight);

    /**
     * 运费试算-菜鸟标准大包、大包专线共用
     * @param productFreight
     * @return
     */
    BigDecimal freightCalculateByCainiaoHeavy(ErpProductExistingFreightRecord productFreight);
    BigDecimal freightCalculateByCainiaoHeavy(AeProductFreight productFreight);

    /**
     * 运费试算-燕文 共用
     * @param productFreight
     * @return
     */
    BigDecimal freightCalculateByYanWen(ErpProductExistingFreightRecord productFreight);

	BigDecimal freightTrialByCaiNiao(ErpProductExistingFreightRecord productFreight);
	BigDecimal freightTrialByCaiNiao(AeProductFreight productFreight);

    List<AeProductFreight> freightTrialWith64(@RequestBody AeProductFreight aeProductFreight);
}
